#ifndef TYPEDEFS_H_
#define TYPEDEFS_H_

#include <string>
#include <vector>
#include <math.h>
#include <queue>
#include <map>
#include <list>
#include <sstream>
#include <fstream>
#include <iostream>

#include "geomTypes.h"

using namespace std;

typedef double                         Number;

typedef Point<3, Number>               Point3D;

typedef Vector<3, Number>              Vector3D;
typedef Vector<2, Number>              Vector2D;

typedef struct {
   Point3D source;
   Point3D target;
} Segment3D;

typedef vector<string>                 Sons;
typedef map<string, Sons>              Hierarchy;

typedef vector<Number>                 Transformations;
typedef map<string, Transformations>   PoseTransformations;

typedef pair<Point3D, string>          Joint;
typedef map<string, Joint>             Pose;

/// An enum specifying format files supporteds 
typedef enum {
   asfFile,
   amcFile,
   bvhFile,
   noneFile
} FileType;

#endif /*TYPEDEFS_H_*/
